package com.yonyou.gmmc.dealerApp.api.dao;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.marketing.common.dto.search.DealerAppSearchDto;
import org.marketing.common.dto.testdrivingAm.TestDrivingAmDto;
import org.marketing.common.dto.testdrivingAm.TestDrivingRoutesDto;
import org.marketing.common.dto.testdrivingAm.TestdrivingAmFrecordDto;

import com.yonyou.gmmc.common.annotation.MySQLDb;
import com.yonyou.gmmc.common.annotation.OracleDb;
import com.yonyou.gmmc.dealerApp.api.entity.TestDrivingRoutesPO;
import com.yonyou.gmmc.dealerApp.api.entity.TestdrivingAmFrecordPO;
import com.yonyou.gmmc.dealerApp.api.entity.TestdrivingAmPO;
import com.yonyou.gmmc.dealerApp.api.model.TtTestdriveAppointment;
import tk.mybatis.mapper.common.Mapper;
//@MySQLDb
@OracleDb
public interface TtTestdriveAppointmentMapper extends Mapper<TtTestdriveAppointment> {
	/**
    *
    * @author LiuJun
    * 试驾预约保存
    * @date 2016年11月7日
    * @param testdrivingAmPO
    */
    public void insertTestDrivingAm(TestdrivingAmPO testdrivingAmPO);
    
    /**
    *
    * @author LiuJun
    * 试驾预约更新
    * @date 2016年11月7日
    * @param testdrivingAmPO
    * @return
    */
    public long updateTestdrivingAm(TestdrivingAmPO testdrivingAmPO);
    
    
    /**
     * 
    *取得服务顾问的试驾预约信息
    * @author WangHuicheng
    * 
    * @date 2016年11月21日
    * @param dealerCode            经销商代码
    * @param salesConsultantId     服务顾问ID
    * @param status                状态
    * @param startDateFrom         预约到店开始时间
    * @param startDateEnd          预约到店结束时间
    * @return List<TestDrivingAmDto> 试驾预约信息
     */
    public List<TestDrivingAmDto> getTestDriverInfo(@Param("dealerCode")String dealerCode,
                                                    @Param("salesConsultantId")Integer salesConsultantId,
                                                    @Param("status") Integer status,
                                                    @Param("startDateFrom") Date startDateFrom,
                                                    @Param("startDateEnd") Date startDateEnd);

    /**
    *
    * @author LiuJun
    * 更新试驾预约状态
    * @date 2016年11月21日
    * @param testdrivingAmFrecordPO
    */
    public void updateTestDrivingAppointStatus(TestdrivingAmFrecordDto testdrivingAmFrecordDto);
    
    
    /**
    *
    * @author LiuJun
    * 试驾预约跟进记录-保存
    * @date 2016年11月21日
    * @param testdrivingAmFrecordPO
    */
    public void insertTestdrivingAmFrecord(TestdrivingAmFrecordPO testdrivingAmFrecordPO);
    
    /**
    *
    * @author LiuJun
    * 试驾预约跟进记录-更新
    * @date 2016年11月21日
    * @param testdrivingAmFrecordPO
    */
    public void updateTestdrivingAmFrecord(TestdrivingAmFrecordPO testdrivingAmFrecordPO);

    /**
    *
    * @author LiuJun
    * 查询试驾预约记录count
    * @date 2016年11月23日
    * @param testdriveAppointmentId
    * @return
    */
    public long queryTestDrivingAppointCount(@Param("testdriveAppointmentId") Long testdriveAppointmentId);

    /**
    *
    * @author QianKun
    * 试驾查询列表
    * @date 2016年11月16日
    * @param potentialUserId
    * @return
    */
    public List<TestDrivingAmDto> queryTestDrivingData(@Param("potentialUserId") Long potentialUserId,@Param("phone") String phone,@Param("submitDateFrom") String submitDateFrom,@Param("submitDateEnd") String submitDateEnd,@Param("startDateFrom") String startDateFrom,@Param("startDateEnd") String startDateEnd,@Param("appointmentStatus") String appointmentStatus);

    /**
    *
    * @author QianKun
    * 试驾查询详情
    * @date 2016年11月15日
    * @param testdriveAppointmentId
    * @return
    */
    public List<TestDrivingAmDto> queryTestDrivingDataById(@Param("testdriveAppointmentId") String testdriveAppointmentId);

    /**
     * 
    * 更具检索条件检索试驾内容
    * @author WangHuicheng
    * @date 2016年11月24日
    * @param dealerAppSearchDto
    * @return
     */
    public List<TestDrivingAmDto> getTestDriverInfoList(DealerAppSearchDto dealerAppSearchDto);
    
    /**
     * 取得试乘试驾线路信息
    *
    * @author WangHuicheng
    * @date 2016年11月30日
    * @param testDrivingRoutesDto
    * @return
     */
    public List<TestDrivingRoutesDto> getTestDriverRoutes(TestDrivingRoutesDto testDrivingRoutesDto);
    
    

    /**
     * 
    * 抢客户更新
    * @author WangHuicheng
    * @date 2016年12月14日
    * @param testdrivingAmPO
    * @return
     */
    public long updateTestdrivingAm4rush(TestdrivingAmPO testdrivingAmPO);

    	
    /**
    *
    * @author LiuJun
    * 根据经销商编码查询试驾路线
    * @date 2016年12月30日
    * @param dealerCode
    * @return
    */
    public List<TestDrivingRoutesPO> queryTestDrivingRoutesByDealerCode(@Param("dealerCode") String dealerCode);

    /**
    *
    * @author LiuJun
    * 根据ID查询试驾相关信息
    * @date 2017年1月18日
    * @param testdriveAppointment
    * @return
    */
    public TestDrivingAmDto queryTestdriveAtRelevantInfoById(@Param("testdriveAppointmentId") Long testdriveAppointmentId);

}